package com.lingyun.ucm.web.mvc.service;

import com.lingyun.ucm.common.exception.ServiceException;
import com.lingyun.ucm.common.pojo.bean.BusinessSystem;
import com.lingyun.ucm.common.pojo.bean.ConfigStoreValue;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 
 * @author Terrence2013
 * 2018年1月24日 上午9:56:19
 * 配置中心服务
 */
public interface ConfigCenterService {
    /**
     * 录入properties文件中的初始化配置
     */
    void importConfigFile(InputStream inputStream, String fileType) throws IOException, ServiceException;


    /**
     * 新增配置
     *
     * @param systemName
     * @param moduleName
     * @param configKey
     * @param configStoreValue
     * @throws ServiceException
     */
    void save(String systemName, String moduleName, String configKey,ConfigStoreValue configStoreValue) throws ServiceException;

    /**
     * 编辑配置
     *
     * @param systemName
     * @param moduleName
     * @param configKey
     * @param configValue
     * @param oldConfigKey
     * @throws ServiceException
     */
    void update(String systemName, String moduleName, String configKey, String configValue, String oldConfigKey) throws ServiceException;

    /**
     * 删除配置
     *
     * @param systemName
     * @param moduleName
     * @param key
     * @throws ServiceException
     */
    void delete(String systemName, String moduleName, String key) throws ServiceException;


    /**
     * 获取列表数据
     *
     * @param path
     * @return
     */
    List<BusinessSystem> list(String path) throws ServiceException;

    /**
     * 获取所有业务系统名称
     *
     * @return
     */
    List<String> getAllSystemNames() throws ServiceException;

    /**
     * 新增业务系统
     *
     * @param systemName
     */
    void saveSystem(String systemName) throws ServiceException;

    /**
     * 删除业务系统
     *
     * @param systemName
     */
    void deleteSystem(String systemName) throws ServiceException;

    /**
     * 删除功能模块
     *
     * @param systemName
     * @param moduleName
     */
    void deleteModule(String systemName, String moduleName) throws ServiceException;

    /**
     * 新增功能模块
     *
     * @param systemName
     * @param moduleName
     */
    void saveModule(String systemName, String moduleName) throws ServiceException;

    /**
     * 返回业务系统配置下载信息
     *
     * @param systemName
     * @return
     */
//    Properties getDownloadProperties(String systemName) throws ServiceException;

    /**
     * 返回业务系统配置下载信息
     *
     * @param systemName
     * @return
     * @throws ServiceException
     */
    String getDownloadString(String systemName) throws ServiceException;

}
